package com.csust.automaticteach.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.csust.automaticteach.model.dto.resource.ResourceQueryRequest;
import com.csust.automaticteach.model.entity.Resource;
import com.baomidou.mybatisplus.extension.service.IService;
import com.csust.automaticteach.model.entity.User;
import com.csust.automaticteach.model.vo.generateteach.UploadReturnVO;
import com.csust.automaticteach.model.vo.resource.AdminResourceVO;
import com.csust.automaticteach.model.vo.resource.ResourceVO;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;

/**
* @author 钰玟
* @description 针对表【t_resource(资源表)】的数据库操作Service
* @createDate 2025-07-16 22:20:24
*/
public interface ResourceService extends IService<Resource> {

    /**
     * 上传资源文件
     * @param file 资源文件
     * @param spaceId 空间id
     * @param loginUser 登录用户
     * @return
     */
    UploadReturnVO uploadResourceFile(MultipartFile file,Long spaceId, User loginUser);

    /**
     * 获取资源查询条件
     * @param resourceQueryRequest 查询条件
     * @return 查询条件
     */
    QueryWrapper<Resource> getResourceQueryWrapper(ResourceQueryRequest resourceQueryRequest);
    /**
     * 获取资源vo
     * @param record 实体类
     * @return vo
     */
    ResourceVO getResourceVO(Resource record);
    /**
     * 获取资源vo列表
     * @param records 实体类
     * @return vo列表
     */
    List<ResourceVO> getResourceVOList(List<Resource> records);
    /**
     * 获取资源vo
     * @param record 实体类
     * @return vo
     */
    AdminResourceVO getAdminResourceVO(Resource record);
    /**
     * 获取管理员资源vo列表
     * @param records
     * @return
     */
    List<AdminResourceVO> getAdminResourceVOList(List<Resource> records);

    /**
     * 根据id删除资源
     * @param id 资源id
     * @param request 请求
     * @return 删除结果
     */
    boolean deleteById(Long id, HttpServletRequest request);
}
